package 分类算法总的很好.剑指offer;

public class NC22合并两个有序的数组1003 {

    // // https://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665?tpId=188&&tqId=38585&rp=1&ru=/activity/oj&qru=/ta/job-code-high-week/question-ranking
// public class Solution {
//    public void merge(int A[], int m, int B[], int n) {
//       //合并
//        for(int i=0;i!=n;i++){
//            A[m+i] = B[i];
//        }
//        //排序
//        Arrays.sort(A);
//    }
// }
    public class Solution {
//     public void merge(int A[], int m, int B[], int n) {
//         int i = m-1;
//         int j = n-1;
//         int index = m + n -1;
//         while (i >=0 && j >= 0) {
//             if (A[i] >= B[j]) {
//                 A[index] = A[i];
//                 i--;
//             } else {
//                 A[index] = B[j];
//                 j--;
//             }
//             index--;
//         }
//         while (j >= 0) {
//             A[j] = B[j];
//             j--;
//         }
//     }

        public  void merge(int[] nums1, int m, int[] nums2, int n) {
            int[] arr = new int[m + n];
            int i = 0;
            int p1 = 0;
            int p2 = 0;
            while (p1 < m && p2 < n) {
                arr[i++] = nums1[p1] <= nums2[p2] ? nums1[p1++] : nums2[p2++];
            }
            while (p1 < m) {
                arr[i++] = nums1[p1++];
            }
            while (p2 < n) {
                arr[i++] = nums2[p2++];
            }
            for (int j = 0; j < m + n; j++)
                nums1[j] = arr[j];
        }


    }
}
